package com.cloudsea.yunhaistores.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cloudsea.yunhaistores.entity.Skus;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

@Mapper
public interface SkusMapper extends BaseMapper<Skus> {
    /**
     * 【新增】使用乐观锁安全地扣减库存
     * <p>
     * 这是一个自定义的SQL方法，通过在UPDATE语句的WHERE子句中检查库存，
     * 来防止在高并发场景下的超卖问题。
     *
     * @param skuId    要扣减库存的SKU ID
     * @param quantity 要扣减的数量
     * @return 受影响的行数。如果返回 1，表示扣减成功；如果返回 0，表示扣减失败（通常是库存不足）。
     */
    @Update("UPDATE skus SET stock = stock - #{quantity} WHERE id = #{skuId} AND stock >= #{quantity}")
    int decreaseStock(@Param("skuId") Long skuId, @Param("quantity") int quantity);
}
